1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.roomlist; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.purple.account; 35 import derelict.purple.connection; 36 37 extern (C): 38 39 alias _PurpleRoomlist PurpleRoomlist; 40 alias _PurpleRoomlistRoom PurpleRoomlistRoom; 41 alias _PurpleRoomlistField PurpleRoomlistField; 42 alias _PurpleRoomlistUiOps PurpleRoomlistUiOps; 43 alias _Anonymous_0 PurpleRoomlistRoomType; 44 alias _Anonymous_1 PurpleRoomlistFieldType; 45 46 enum _Anonymous_0 47 { 48 PURPLE_ROOMLIST_ROOMTYPE_CATEGORY = 1, 49 PURPLE_ROOMLIST_ROOMTYPE_ROOM = 2 50 } 51 52 enum _Anonymous_1 53 { 54 PURPLE_ROOMLIST_FIELD_BOOL = 0, 55 PURPLE_ROOMLIST_FIELD_INT = 1, 56 PURPLE_ROOMLIST_FIELD_STRING = 2 57 } 58 59 struct _PurpleRoomlist 60 { 61 PurpleAccount* account; 62 GList* fields; 63 GList* rooms; 64 gboolean in_progress; 65 gpointer ui_data; 66 gpointer proto_data; 67 guint ref_; 68 } 69 70 struct _PurpleRoomlistRoom 71 { 72 PurpleRoomlistRoomType type; 73 gchar* name; 74 GList* fields; 75 PurpleRoomlistRoom* parent; 76 gboolean expanded_once; 77 } 78 79 struct _PurpleRoomlistField 80 { 81 PurpleRoomlistFieldType type; 82 gchar* label; 83 gchar* name; 84 gboolean hidden; 85 } 86 87 struct _PurpleRoomlistUiOps 88 { 89 void function (PurpleAccount*) show_with_account; 90 void function (PurpleRoomlist*) create; 91 void function (PurpleRoomlist*, GList*) set_fields; 92 void function (PurpleRoomlist*, PurpleRoomlistRoom*) add_room; 93 void function (PurpleRoomlist*, gboolean) in_progress; 94 void function (PurpleRoomlist*) destroy; 95 void function () _purple_reserved1; 96 void function () _purple_reserved2; 97 void function () _purple_reserved3; 98 void function () _purple_reserved4; 99 } 100 101 version(Derelict_Link_Static) 102 { 103 extern( C ) nothrow 104 { 105 void purple_roomlist_show_with_account(PurpleAccount* account); 106 PurpleRoomlist* purple_roomlist_new(PurpleAccount* account); 107 void purple_roomlist_ref(PurpleRoomlist* list); 108 void purple_roomlist_unref(PurpleRoomlist* list); 109 void purple_roomlist_set_fields(PurpleRoomlist* list, GList* fields); 110 void purple_roomlist_set_in_progress(PurpleRoomlist* list, gboolean in_progress); 111 gboolean purple_roomlist_get_in_progress(PurpleRoomlist* list); 112 void purple_roomlist_room_add(PurpleRoomlist* list, PurpleRoomlistRoom* room); 113 PurpleRoomlist* purple_roomlist_get_list(PurpleConnection* gc); 114 void purple_roomlist_cancel_get_list(PurpleRoomlist* list); 115 void purple_roomlist_expand_category(PurpleRoomlist* list, PurpleRoomlistRoom* category); 116 GList* purple_roomlist_get_fields(PurpleRoomlist* roomlist); 117 PurpleRoomlistRoom* purple_roomlist_room_new(PurpleRoomlistRoomType type, const(gchar)* name, PurpleRoomlistRoom* parent); 118 void purple_roomlist_room_add_field(PurpleRoomlist* list, PurpleRoomlistRoom* room, gconstpointer field); 119 void purple_roomlist_room_join(PurpleRoomlist* list, PurpleRoomlistRoom* room); 120 PurpleRoomlistRoomType purple_roomlist_room_get_type(PurpleRoomlistRoom* room); 121 const(char)* purple_roomlist_room_get_name(PurpleRoomlistRoom* room); 122 PurpleRoomlistRoom* purple_roomlist_room_get_parent(PurpleRoomlistRoom* room); 123 GList* purple_roomlist_room_get_fields(PurpleRoomlistRoom* room); 124 PurpleRoomlistField* purple_roomlist_field_new(PurpleRoomlistFieldType type, const(gchar)* label, const(gchar)* name, gboolean hidden); 125 PurpleRoomlistFieldType purple_roomlist_field_get_type(PurpleRoomlistField* field); 126 const(char)* purple_roomlist_field_get_label(PurpleRoomlistField* field); 127 gboolean purple_roomlist_field_get_hidden(PurpleRoomlistField* field); 128 void purple_roomlist_set_ui_ops(PurpleRoomlistUiOps* ops); 129 PurpleRoomlistUiOps* purple_roomlist_get_ui_ops(); 130 } 131 } 132 else 133 { 134 extern( C ) nothrow 135 { 136 alias da_purple_roomlist_show_with_account = void function(PurpleAccount* account); 137 alias da_purple_roomlist_new = PurpleRoomlist* function(PurpleAccount* account); 138 alias da_purple_roomlist_ref = void function(PurpleRoomlist* list); 139 alias da_purple_roomlist_unref = void function(PurpleRoomlist* list); 140 alias da_purple_roomlist_set_fields = void function(PurpleRoomlist* list, GList* fields); 141 alias da_purple_roomlist_set_in_progress = void function(PurpleRoomlist* list, gboolean in_progress); 142 alias da_purple_roomlist_get_in_progress = gboolean function(PurpleRoomlist* list); 143 alias da_purple_roomlist_room_add = void function(PurpleRoomlist* list, PurpleRoomlistRoom* room); 144 alias da_purple_roomlist_get_list = PurpleRoomlist* function(PurpleConnection* gc); 145 alias da_purple_roomlist_cancel_get_list = void function(PurpleRoomlist* list); 146 alias da_purple_roomlist_expand_category = void function(PurpleRoomlist* list, PurpleRoomlistRoom* category); 147 alias da_purple_roomlist_get_fields = GList* function(PurpleRoomlist* roomlist); 148 alias da_purple_roomlist_room_new = PurpleRoomlistRoom* function(PurpleRoomlistRoomType type, const(gchar)* name, PurpleRoomlistRoom* parent); 149 alias da_purple_roomlist_room_add_field = void function(PurpleRoomlist* list, PurpleRoomlistRoom* room, gconstpointer field); 150 alias da_purple_roomlist_room_join = void function(PurpleRoomlist* list, PurpleRoomlistRoom* room); 151 alias da_purple_roomlist_room_get_type = PurpleRoomlistRoomType function(PurpleRoomlistRoom* room); 152 alias da_purple_roomlist_room_get_name = const(char)* function(PurpleRoomlistRoom* room); 153 alias da_purple_roomlist_room_get_parent = PurpleRoomlistRoom* function(PurpleRoomlistRoom* room); 154 alias da_purple_roomlist_room_get_fields = GList* function(PurpleRoomlistRoom* room); 155 alias da_purple_roomlist_field_new = PurpleRoomlistField* function(PurpleRoomlistFieldType type, const(gchar)* label, const(gchar)* name, gboolean hidden); 156 alias da_purple_roomlist_field_get_type = PurpleRoomlistFieldType function(PurpleRoomlistField* field); 157 alias da_purple_roomlist_field_get_label = const(char)* function(PurpleRoomlistField* field); 158 alias da_purple_roomlist_field_get_hidden = gboolean function(PurpleRoomlistField* field); 159 alias da_purple_roomlist_set_ui_ops = void function(PurpleRoomlistUiOps* ops); 160 alias da_purple_roomlist_get_ui_ops = PurpleRoomlistUiOps* function(); 161 } 162 163 __gshared 164 { 165 da_purple_roomlist_show_with_account purple_roomlist_show_with_account; 166 da_purple_roomlist_new purple_roomlist_new; 167 da_purple_roomlist_ref purple_roomlist_ref; 168 da_purple_roomlist_unref purple_roomlist_unref; 169 da_purple_roomlist_set_fields purple_roomlist_set_fields; 170 da_purple_roomlist_set_in_progress purple_roomlist_set_in_progress; 171 da_purple_roomlist_get_in_progress purple_roomlist_get_in_progress; 172 da_purple_roomlist_room_add purple_roomlist_room_add; 173 da_purple_roomlist_get_list purple_roomlist_get_list; 174 da_purple_roomlist_cancel_get_list purple_roomlist_cancel_get_list; 175 da_purple_roomlist_expand_category purple_roomlist_expand_category; 176 da_purple_roomlist_get_fields purple_roomlist_get_fields; 177 da_purple_roomlist_room_new purple_roomlist_room_new; 178 da_purple_roomlist_room_add_field purple_roomlist_room_add_field; 179 da_purple_roomlist_room_join purple_roomlist_room_join; 180 da_purple_roomlist_room_get_type purple_roomlist_room_get_type; 181 da_purple_roomlist_room_get_name purple_roomlist_room_get_name; 182 da_purple_roomlist_room_get_parent purple_roomlist_room_get_parent; 183 da_purple_roomlist_room_get_fields purple_roomlist_room_get_fields; 184 da_purple_roomlist_field_new purple_roomlist_field_new; 185 da_purple_roomlist_field_get_type purple_roomlist_field_get_type; 186 da_purple_roomlist_field_get_label purple_roomlist_field_get_label; 187 da_purple_roomlist_field_get_hidden purple_roomlist_field_get_hidden; 188 da_purple_roomlist_set_ui_ops purple_roomlist_set_ui_ops; 189 da_purple_roomlist_get_ui_ops purple_roomlist_get_ui_ops; 190 } 191 }